A figura 1 ilustra o racional utilizado e tem como principias referências estudos de pesquisadores como Tomblin Murphy et al. (2016), Mackenzie et al. (2022), Laurece e Karnon (2017), Asamani, Christmals e Reitsma (2021)
Figura 1 - Demanda por serviços
A primeira informação relevante que precisamos considerar aqui é o número de casos que temos na região de saúde selecionada. A consulta abaixo acessa o datalake para computar o número notificaçoes ao longo do tempo de acordo com registros do Sistema de Informação de Agravo e Notificação (SINAN).
df_dengue <-
sqlQuery(channel,'SELECT * FROM "Analytics Layer".Epidemiológico."Casos de Dengue por ano e região de saúde"')
DT::datatable(df_dengue)
Observa-se que a coluna classificacao_final é formada
por múltiplas opções, inclusive por casos notificados, mas
posteriormente descartados.
df_dengue %>%
group_by(classificacao_final) %>%
summarise(quantidade = sum(QTD))
## # A tibble: 10 x 2
## classificacao_final quantidade
## <chr> <int>
## 1 Dengue 8839613
## 2 Dengue com sinais de alarme 82291
## 3 Dengue grave 7381
## 4 Descartado 5705780
## 5 DESCONHECIDO - cod. 2 32821
## 6 DESCONHECIDO - cod. 3 8871
## 7 DESCONHECIDO - cod. 4 454
## 8 DESCONHECIDO - cod. 6 3
## 9 Ignorado 97102
## 10 Inconclusivo 2124911
Seguindo procedimentos adotados por departamentos de vigilância epidemiológica, faremos um recorte entre casos notificados e confirmados. Os primeiros contempla os casos descartados, desconhecidos, ignorados e inconclusivos.
df_dengue_conf_notif <-
df_dengue %>%
mutate(tipo_classificacao = case_when(classificacao_final == "Dengue" ~ "Confirmado",
classificacao_final == "Dengue com sinais de alarme" ~ "Confirmado",
classificacao_final == "Dengue grave" ~ "Confirmado",
TRUE ~ "Notificado"))
df_dengue_conf_notif %>%
group_by(tipo_classificacao) %>%
summarise(quantidade = sum(QTD))
## # A tibble: 2 x 2
## tipo_classificacao quantidade
## <chr> <int>
## 1 Confirmado 8929285
## 2 Notificado 7969942
Vamos visualizar apenas a evolução de casos no Centro-Oeste para se ter uma compreensão da dinâmica.
a <- df_dengue_conf_notif %>%
group_by(ano_sintomas, uf, tipo_classificacao) %>%
summarise(QTD = sum(QTD)) %>%
filter(uf == "Goiás" | uf == "Mato Grosso" |
uf == "Mato Grosso do Sul" |
uf == "Distrito Federal") %>%
ggplot(aes(x = ano_sintomas, y = QTD, fill = tipo_classificacao)) +
geom_col() + facet_wrap(~uf, scales = "free_y") + theme_minimal() +
xlab("Ano") + xlab("Casos notificados e confirmados") +
ggtitle("Casos notificados e confirmados de Dengue", "Fonte: SINAN")
## `summarise()` has grouped output by 'ano_sintomas', 'uf'. You can override using
## the `.groups` argument.
plotly::ggplotly(a)
Vamos acessar apenas uma região de saúde para empregar os cálculos de necessidade, uma vez que a jornada do usuário no Sisdim se dá no nível de análise região de saúde. Além disso, vamos acessar apenas o ano de 2021, pois ainda não temos previsões realizadas.
b <- df_dengue_conf_notif %>%
filter(uf == "Goiás" & regiao_saude_pad == "CENTRAL" & ano_sintomas == 2021) %>%
ggplot(aes(x = fct_reorder(classificacao_final, QTD), y = QTD)) +
geom_col() + coord_flip() + theme_minimal() +
xlab("Classificação") + ylab("Quantidade")
plotly::ggplotly(b)
De acordo com o mapeamento da jornada do usuário, conforme figura 1, mas também disponível nesse link, o paciente com caso suspeito poderá seguir alguns caminhos.
Figura 1 - Jornada do paciente
Se ele não possuir sinais de alarme ou choque, pode:
Se o paciente possuir sinais de alarme ou choque, pode:
Vamos assumir que todos os casos de dengue, ignorados, descartados e inconclusivos passarão pelo fluxo de número 1, uma vez que se o usuário dá entrada no serviço de saúde, ocorre a notificação - independente se vier a ser confirmada ou não no futuro - e, consequentemente, a assistência mínima.
Vamos assumir, por enquanto, que 60% dos pacientes sigam o fluxo 1 e 40% siga o fluxo 2. Ainda vamos estudar formas de determinar melhor o percentual de casos que segue o fluxo 1 e 2. Uma das estratégias é verificar pelo próprio SINAN se o paciente possui comorbidades. Se houver um número muito elevado de casos omissos para essas variáveis no SINAN, outra estratégia é verificar a prevalência de doenças crônicas na população do estado por faixa etária, conforme dados da Pesquisa Nacional de Saúde (PNS), conjugado às idades dos pacientes registrados no SINAN.
Os fluxos 3 e 4 devem ser mensurados de modo diferente, possivelmente utilizando como proxy a quantidade de dias em internação.
O SINAN não tem variável que indica a evolução para internação, apenas para óbito. Portanto, a partir dessa base não é possível identificar quais os casos do fluxo 2 evoluem para o fluxo 3
Para o presente exemplo vamos assumir alguns tempos, porém, isso será objeto de parametrização do usuário do Sisdim.
Com base na premissas a e b assumidas
acima, temos a seguinte resultado. Lembrando que vamos assumir que 60%
dos 18584 pacientes vão seguir o fluxo 1 e 40% o fluxo 2.
dengue_fluxo <-
df_dengue %>%
filter(uf == "Goiás" & regiao_saude_pad == "CENTRAL" & ano_sintomas == 2021) %>%
mutate(fluxo = case_when(classificacao_final == "Dengue com sinais de alarme" ~ "Fluxo 3",
classificacao_final == "Dengue grave" ~ "Fluxo 4",
TRUE ~ "Fluxo 1 ou 2")) %>%
group_by(uf, regiao_saude_pad, fluxo) %>%
summarise(total = sum(QTD))
## `summarise()` has grouped output by 'uf', 'regiao_saude_pad'. You can override
## using the `.groups` argument.
dengue_fluxo
## # A tibble: 3 x 4
## # Groups: uf, regiao_saude_pad [1]
## uf regiao_saude_pad fluxo total
## <chr> <chr> <chr> <int>
## 1 Goiás CENTRAL Fluxo 1 ou 2 18584
## 2 Goiás CENTRAL Fluxo 3 434
## 3 Goiás CENTRAL Fluxo 4 31
Com base na premissa c, vamos trabalhar inicialmente
apenas com os fluxos 1 e 2. Além disso, com base na premissa
e, os tempos foram assumidos, mas reconfigurações de tempo
podem ser realizadas no Sisdim.
Figura 3 - Procedimentos necessários
Os procedimentos marcados em amarelo podem ser ajustados também pelo usuário do Sisdim. O hemograma completo do fluxo 1, por exemplo, não é realizado, obrigatoriamente, para todos os casos, ficando a critério do médico. Portanto, assumimos uma frequência de 0.25, ou seja, solicitação de um exame para cada quatro pacientes. Porém, mais um vez, é um parâmetro que pode ser ajustado em sistema.